/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.ventas.control;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cl.ventas.modelo.Carrito;
import cl.ventas.modelo.Producto;
import cl.ventas.modelo.Usuario;
import cl.ventas.modelo.Ventas;
import cl.ventas.modelo.DetalleVenta;
import cl.ventas.modelo.dao.VentasDao;
import cl.ventas.modelo.dao.DetalleVentaDao;
import cl.ventas.modelo.dao.ProductoControl;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 *
 * @author Isaac
 */
public class ServletFinalizarCompra extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession sesion = request.getSession();
        Vector<Carrito> carritoCompra = null;
        carritoCompra = (Vector<Carrito>) sesion.getAttribute("carrito");
        
        int numero = (int) carritoCompra.get(0).getSubTotal();
        Vector<Producto> productos=(Vector<Producto>)sesion.getAttribute("productos");

        //Genera fecha Ej: 20-04-2009
        Calendar c2 = new GregorianCalendar();   
        String fecha = "" + c2.get(Calendar.DATE) + "-";
        fecha += (c2.get(Calendar.MONTH) + 1) + "-";
        fecha += c2.get(Calendar.YEAR);
        
        
        //Suma el total de la compra y guarda el usuario
        double Total = 0;
        for(int i=0; i<carritoCompra.size(); i++){
            Total += carritoCompra.get(i).getSubTotal();
        }
        Usuario u = carritoCompra.get(0).getUsuario();
        //Crea un objeto Ventas con los datos de la venta (fecha actual, total de todos los productos, codigo del usuario
        Ventas v = new Ventas(fecha, Total, u.getUsuario_codigo());
        //Instancia un objeto ventasDao y guarda los datos en la BD
        VentasDao ventasdao = new VentasDao();
        ventasdao.save(v);
        
        DetalleVentaDao dBD = new DetalleVentaDao();
        ProductoControl prod = new ProductoControl();
        DetalleVenta d = null;
        for(int i=0; i<carritoCompra.size(); i++){
            d = new DetalleVenta();
            d.setCodigo(ventasdao.findMax());
            //Codigo del Venta - item, el "numero" del producto en la venta
            d.setItem(i+1);
            int Cod = carritoCompra.get(i).getCodigo();
            int Cant = carritoCompra.get(i).getCantidadPedida();
            d.setProducto_Codigo(Cod);
            d.setCantidad(Cant);
            d.setSubtotal(carritoCompra.get(i).getSubTotal());
            dBD.save(d);
            int x = (int) carritoCompra.get(i).getProducto().getStock() - Cant;
            prod.ProductoStock(x, Cod);
        }
        PrintWriter out=response.getWriter();
        imprimarPagina(out, carritoCompra, d);
        out.close();
        sesion.removeAttribute("carrito");
    }

        public void imprimarPagina(PrintWriter out,Vector<Carrito> carritoCompras, DetalleVenta v){

        out.println("<html>");
        out.println("<head>");
        out.println("</head>");
        out.println("<body>");
        out.println("<style type=\"text/css\">");
        out.println("<!--");
        out.println("body {");
        out.println("background-color: #FFFF99;");
        out.println("}");
        out.println("body,td,th {");
        out.println("font-family: Arial, Helvetica, sans-serif;");
        out.println("}#titulo{font-family: Hobo Std;}");
        out.println("</style>");
        out.println("</head>");
        
        out.println("<body>");
        out.println("<table width=\"800\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">");
        out.println("<tr>");
        out.println("<td width=\"84\" bgcolor=\"#CC9933\"><img src=\"/ejemplo/img/logo.gif\" width=\"84\" height=\"77\" /></td>");
        out.println("<td id ='titulo' width='716' bgcolor='#CC9933'><h1 style='color:#FFFFFF' align=\"center\">Bear's Store</h1></td>");
        out.println("</tr>");
        
        out.println("<tr align=\"center\">");
        out.println("<td colspan=\"2\">&nbsp;</td>");
        out.println("</tr>");
        out.println("<tr align=\"center\">");
        out.println("<td colspan=\"2\">");
        //Consultar productos
//        out.println("<h4><a href='/ejemplo/vistaCliente/listado.jsp'>Consultar Productos</a> | <a href='/ejemplo/vistaCliente/AgregarCarrito1.jsp'>Agregar al Carrito</a> | <a href=\"/ejemplo/salir.do\">Salir</a></h4></td>");
        out.println("<a href='/ejemplo/vistaCliente/listado.jsp'> <img src='/ejemplo/img/ListadoBtn.gif'</a>");
        out.println("<a href='/ejemplo/vistaCliente/AgregarCarrito1.jsp'> <img src='/ejemplo/img/AgrCarrBtn.gif'</a>");
        out.println("<a href='/ejemplo/vistaCliente/CarritoCompra.jsp'><img src='/ejemplo/img/VerCarritoBtn.gif' width='150' height='50' alt='VerCarritoBtn'/></a>");
        out.println("<a href='/ejemplo/salir.do'> <img src='/ejemplo/img/SalirBtn.gif'</a></td>");
        
        out.println("</tr>");
        out.println("<tr>");
        out.println("<td colspan=\"2\">&nbsp;</td>");
        out.println("</tr>");
        out.println("<tr>");
        out.println("<td colspan=\"2\"><table width=\"100%\" border=\"0\">");
        out.println("<tr bgcolor=\"#CC9933\" style=\"color: #FFFFFF\">");
        out.println("<td width=\"68%\"><h4>Nombre</h4></td>");
        out.println("<td width=\"16%\" align=\"right\" valign=\"top\"><h4><span class=\"Estilo3\">Stock</span></h4></td>");
        out.println("<td width=\"16%\" align=\"right\" valign=\"top\"><h4><span class=\"Estilo3\">Precio</span></h4></td>");
        out.println("</tr>");

        //Vamos a mostrar la lista de productos del vector de Productos

        for(int i=0; i<carritoCompras.size(); i++){

            if(i%2==0){
                out.println("<tr bgcolor=\"#FFFFFF\">");
                out.println("<td>" + carritoCompras.get(i).getProducto().getNombre() + "</td>");
                out.println("<td align=\"right\" valign=\"top\">"+ carritoCompras.get(i).getCantidadPedida() +"</td>");
                out.println("<td align=\"right\" valign=\"top\">"+ carritoCompras.get(i).getSubTotal() +"</td>");
                out.println("</tr>");
            }else{
                out.println("<tr>");
                out.println("<td>" + carritoCompras.get(i).getProducto().getNombre() + "</td>");
                out.println("<td align=\"right\" valign=\"top\">"+ carritoCompras.get(i).getCantidadPedida() +"</td>");
                out.println("<td align=\"right\" valign=\"top\">"+ carritoCompras.get(i).getSubTotal() +"</td>");
                out.println("</tr>");
            }
        }
                out.println("<tr bgcolor=\"#CC9933\" style=\"color: #FFFFFF\">");
        out.println("<td width='16%' align='left' valign='top'><h4><span class='Estilo3'>TOTAL A PAGAR</span></h4></td>");
        double Total = 0;
        for(int i=0; i<carritoCompras.size(); i++){
            Total += carritoCompras.get(i).getSubTotal();
        }
        out.println("<td colspan='2' align=\"right\" valign=\"top\">"+ Total +"</td>");
        out.println("</tr>");
        out.println("</table></td>");
        out.println("</tr>");
        out.println("<tr>");
        out.println("<td colspan=\"2\" aling=\"center\"> <h1><b>COMPRA REALIZADA CON ÉXITO<b><h1>  </td>");
        out.println("</tr>");
        out.println("</table>");
        out.println("</body>");
        out.println("</html>");

        out.close();
    }
    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
